const request = require('../../utils/request')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    queryParam: {
      pageSize: 10, //每页展示的条数
      pageNo: 1, //当前页数
      total: 1, //总页数
      startDate: "",
      endDate: "",
      carNumber: "",
      ststus: ""
    },
    // 订单列表数据
    orderList: [
      // {
      //   id: 1,
      //   productName: "有机蔬菜组合",
      //   isShared: false,
      //   arriveTime: "2023-10-20 08:30",
      //   statusText: "已核验",
      //   statusColor: "#4CAF50",
      //   licensePlate: "京A12345"
      // },
      // {
      //   id: 2,
      //   productName: "新鲜水果拼盘",
      //   isShared: true,
      //   arriveTime: "2023-10-19 14:20",
      //   statusText: "已申报",
      //   statusColor: "#FF9800",
      //   licensePlate: "沪B67890"
      // }

    ],


    statusText: '全部状态',
    statusOptions: [],
    statusIndex: 0,
    // 选择器状态
    showDatePicker: false,
    showStatusPicker: false,
    statusPickerValue: [0], // 默认选中"全部状态"
    startShowDate: "",
    endShowDate: "",
    searchValue: "",
    hasReachedBottom: false,
    // 车牌号键盘
    showPlateKeyboard: false
  },
// 输入框变更（车牌号搜索）
  onSearchChange(e) {
      const val = e.detail.value || "";
      this.setData({
        "queryParam.carNumber": val,
        "queryParam.pageNo": 1,
        orderList: []
      });
      // 触发刷新（简单实现，若需要防抖可后续加）
      this.getPage();
    },
  
    // 清空车牌号输入
    clearCarNumber() {
      this.setData({
        "queryParam.carNumber": "",
        "queryParam.pageNo": 1,
        orderList: []
      });
      // 隐藏自定义键盘（如果打开）
      this.setData({ showPlateKeyboard: false });
      this.getPage();
    },
  // 返回上一页
  navigateBack() {
    wx.navigateBack();
  },

  // 跳转到创建申报单页面
  navigateToCreate() {
    wx.navigateTo({
      url: '/pages/merchant/createdetail'
    });
  },

  // 跳转到详情页面
  navigateToDetail(e) {
    const id = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/merchant/applydetail?id=${id}`
    });
  },

  // 显示日期选择器
  showDatePicker() {
    this.setData({
      showDatePicker: true,
      showStatusPicker: false
    });
  },

  // 显示状态选择器
  showStatusPicker() {
    this.setData({
      showStatusPicker: true,
      showDatePicker: false
    });
  },

  // 隐藏所有选择器
  hidePickers() {
    this.setData({
      showDatePicker: false,
      showStatusPicker: false
    });
  },

  // 日期选择变化
  onDateChange(e) {
    const index = e.detail.value[0];
    this.setData({
      dateRange: this.data.dateOptions[index].text,
      showDatePicker: false
    });
    // 这里可以添加筛选逻辑
  },

  // 状态选择变化
  onStatusChange: function (e) {
    const index = e.detail.value;
    const selectedOption = this.data.statusOptions[index];

    this.setData({
      statusIndex: index,
      statusPickerValue: selectedOption.value,
      statusText: selectedOption.text
    });

    console.log('选中的值：', selectedOption.value);
    console.log('选中的文本：', selectedOption.text);
    // 这里可以添加筛选逻辑
  },

  // 显示车牌号键盘
  showPlateKeyboard() {
    this.setData({
      showPlateKeyboard: true
    });
  },

  // 隐藏车牌号键盘
  hidePlateKeyboard() {
    this.setData({
      showPlateKeyboard: false
    });
  },

  // 车牌号确认
  onPlateConfirm(e) {
    const plateNumber = e.detail.value;
    this.setData({
      'orderList': [],
      "queryParam.pageSize": 10, //每页展示的条数
      "queryParam.pageNo": 1, //当前页数
      "queryParam.total": 1, //总页数
      'queryParam.carNumber': plateNumber,
      showPlateKeyboard: false
    });

    // 触发搜索
    this.getPage();
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 获取状态
    this.getOredrStatus();
    // 获取现在的日期，渲染结束日期是明天，开始日期是三天前
    this.calculateDates();
    // 加载分页数据
    this.getPage();
  },
  getOredrStatus: function(){
    request.get('/admin-api/mini/home/getOrderStatus').then(res => {
      if (res.code === 0) {
        this.setData({
          "statusOptions": res.data
        })
      }
    })
  },
  refreshData: function () {
    this.setData({
      orderList: [],
      "queryParam.pageSize": 10, //每页展示的条数
      "queryParam.pageNo": 1, //当前页数
      "queryParam.total": 1 //总页数
    })
    this.getPage();
  },
  getPage: function () {
    wx.showLoading({
      title: '正在获取数据'
    })
    request.get('/admin-api/system/order-apply/miniPage', this.data.queryParam).then(res => {
      console.log("res:" + res)
      wx.hideLoading()
      if (res.code === 0) {
        var arr1 = this.data.orderList;
        var arr2 = res.data.list;
        arr1 = arr1.concat(arr2); //合并两个数组
        this.setData({
          orderList: arr1,
          "queryParam.total": res.data.total
        })
      }
    })
  },
  calculateDates() {
    const today = new Date(); // 获取当前日期

    // 1. 计算明天的日期
    const tomorrow = new Date(today);
    tomorrow.setDate(today.getDate() + 1); // 日期+1

    // 2. 计算3天前的日期
    const threeDaysAgo = new Date(today);
    threeDaysAgo.setDate(today.getDate() - 3); // 日期-3

    // 格式化并更新到data中
    this.setData({
      "queryParam.startDate": this.formatDate(threeDaysAgo),
      "queryParam.endDate": this.formatDate(tomorrow),
      startShowDate: this.formatShowDate(threeDaysAgo),
      endShowDate: this.formatShowDate(tomorrow)
    });
  },

  // 格式化日期函数（同上）
  formatDate(date) {
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    return `${year}-${month}-${day}`;
  },
  // 格式化日期函数（同上）
  formatShowDate(date) {
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    return `${month}-${day}`;
  },
  // 定义转换函数，参数为 YYYY-MM-DD 格式的字符串
  formatToMMDD(dateStr) {
    // 1. 用 "-" 分割字符串，得到 ["YYYY", "MM", "DD"]
    const parts = dateStr.split('-');
    // 2. 提取索引1（月份）和索引2（日期），拼接为 MM-DD
    return `${parts[1]}-${parts[2]}`;
  },
  // 开始日期
  bindStartDateChange: function (e) {
    console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
      "queryParam.startDate": e.detail.value,
      startShowDate: this.formatToMMDD(e.detail.value)
    })
    this.refreshData();
  },
  // 结束日期
  bindEndDateChange: function (e) {
    console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
      "queryParam.endDate": e.detail.value,
      endShowDate: this.formatToMMDD(e.detail.value)
    })
    this.refreshData();
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    // 模拟分页加载逻辑
    const currentLength = this.data.orderList.length;
    const pagesize = this.data.queryParam.pageNo;
    // 假设总数据量为3条，已加载全部时显示提示
    if (currentLength === this.data.queryParam.total) {
      this.setData({
        hasReachedBottom: true
      });
    } else {
      // 有更多数据时加载（实际项目中这里会请求接口）
      this.setData({
        hasReachedBottom: false,
        "queryParam.total": pagesize + 1
      });
      this.getPage()
    }
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})